#include "GatherDataHandlerMemory.h"
#include <stdio.h>

//3 处理完成后把结果写到写到全局变量，并且其他地方通过extern引入使用
GatherTargetData  targetData;
extern int heartState;
int times;

// 数据清洗函数
//是否期望继续往下走
u8 cleanData(const GatherData *source) {
    if (source->temp > 200) {
        times++;
        if (times > 10) {
            heartState = 0;
						times = 0;
					  return 0;   //往下判定
        }
				return 1;
    } else {
        times = 0;
        heartState = 1;
			  return 0; //往下判定
    }
}

// 数据处理函数
void processData(const GatherData *source) {
    targetData.temp = source->temp;
    targetData.humi = source->humi;
    targetData.smoke = source->smoke / 40;
    targetData.sunshine = 100 - source->sunshine / 40;
    targetData.raidrop = source->raidrop;
}


void dataHandle(GatherData* source){
	
	if (source == NULL) {
        printf("Error: Input source is NULL.\r\n");
        return;
    }
    // 1. 数据清洗
    u8 result  = cleanData(source);
		if(result) return;  //数据清洗判定
		
    if (heartState == 0) {
        // 本次不做处理，并且让心跳模块报点异常
        return;
    }
    // 2. 做数据处理
    processData(source);
    // 4. 本地可以做一些预测
    // 这里可以添加本地预测的代码
    // 5. 传送到服务器（http，mqtt）-可以做统计预测
    // 这里可以添加发送数据到服务器的代码
	
}